/**
 * API服务模块
 * 提供与AI易经出行相关的API调用功能
 */

class ApiService {
  /**
   * 调用AI易经出行API
   * @param {string} info - 用户提供的信息（如姓名、出生日期、电话号码等）
   * @returns {Promise} - 返回API调用的Promise对象
   */
  static callAiYiJingApi(info) {
    const content_text = this._generatePrompt(info);
    
    const options = {
      method: "POST",
      headers: {
        Authorization: "Bearer sk-xziuakupoderrivcjtmpirqodwtasvnddhjmfwetquulqwbi",
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        messages: [
          {
            content: content_text,
            role: "user",
          },
        ],
        model: "Qwen/Qwen2.5-7B-Instruct",
      }),
    };
    
    return fetch("https://api.siliconflow.cn/v1/chat/completions", options)
      .then((response) => response.json())
      .then((response) => {
        try {
          const content = response.choices[0].message.content;
          return JSON.parse(content);
        } catch (error) {
          console.error("JSON解析错误:", error);
          console.log("原始响应数据:", response.choices[0].message.content);
          throw error;
        }
      });
  }
  
  /**
   * 生成API调用的提示文本
   * @param {string} info - 用户提供的信息
   * @returns {string} - 格式化的提示文本
   * @private
   */
  static _generatePrompt(info) {
    return `请你扮演一位精通易学的老师，根据我提供的信息推算运势以及出行八个方向（东、南、西、北、东南、东北、西南、西北）的某个方向的吉凶情况。我可能提供的信息包括名字、出生年月日、电话号码、邮箱、身份证号、QQ 号码、微信号，或者其他相关信息。
    推算步骤：
    1、先根据给出的日期进行当日黄道信息的获取。
    2、再根据给出的方向进行当日的吉凶判断。
    3、最后根据具体方向的吉凶说明具体的运势方向信息，如果是不吉利的需要给出解挂的方法。
    4、将返回的信息匹配到对应的json文件中，
    推算结果仅返回运势以及方位的吉凶信息，以 JSON 格式呈现，格式如下：
            {
                "today_luck": "xx",
                "jx": "xx",
                "info": "xx",
                "jie":"xx"
            }
            "today_luck": "今日运势",
            jx: "吉凶",
            info: "具体运势",
            jie: "提升运势或解挂方法"
            要求所有返回内容不为空，除规定的 JSON 格式内容外，不返回其他任何信息和语言。本次我给你的信息是：${info}`;
  }
}

// 导出API服务模块
export default ApiService;